Dart.Snmp Namespace > Manager Class > Marshal Method : Marshal(String,Variable[,],String,Object) Method |
Public Overloads Sub Marshal( _ ByVal oid As String, _ ByVal table(,) As Variable, _ ByVal message As String, _ ByVal state As Object _ )
This method can be used to marshal table information from a worker thread to the UI thread for typical display purposes. It calls the OnTable method, which raises the Table event.
See the SynchronizingObject property for information on updating UI controls in your event handler.
private void button1_Click(object sender, EventArgs e) { //Start a worker thread to retrieve and display an SNMP Table manager1.Start(getTable, null); } private void getTable(SnmpSocket managerSocket, object state) { //Retrieve table using GetTable with 20 max-repetitions (retrieves up to 20 rows) Variable[,] table = managerSocket.GetTable(manager1.Mib.GetByNodeName(NodeName.ifTable).Oid, SnmpVersion.Two, "public", null, myAgentAddress, 0, 20); //Marshal table to UI thread manager1.Marshal(manager1.Mib.GetByNodeName(NodeName.ifTable).Oid, table, "", null); } private void manager1_Table(object sender, Dart.Snmp.TableEventArgs e) { //Raised on the UI thread. //Populate a ListView control with the table data buildTable(e.Table); } private void buildTable(Variable[,] table) { //Add columns to the ListView for each column in the table for (int i = 0; i < table.GetLength(1); i++) lvwTable.Columns.Add(table[0, i].Definition.Name, 150, HorizontalAlignment.Left); ListViewItem tableRow; int r, c = 0; for (r = 0; r < table.GetLength(0); r++) { //Create a new row and add the first cell tableRow = new ListViewItem(table[r, 0].Value.ToString()); //Add each additional cell in the row for (c = 1; c < table.GetLength(1); c++) tableRow.SubItems.Add((table[r, c] == null) ? "NULL" : table[r, c].Value.ToString()); //Add the row to the listview lvwTable.Items.Add(tableRow); } }
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) 'Start a worker thread to retrieve and display an SNMP Table manager1.Start(AddressOf getTable, Nothing) End Sub Private Sub getTable(ByVal managerSocket As SnmpSocket, ByVal state As Object) 'Retrieve table using GetTable with 20 max-repetitions (retrieves up to 20 rows) Dim table(,) As Variable = managerSocket.GetTable(manager1.Mib.GetByNodeName(NodeName.ifTable).Oid, SnmpVersion.Two, "public", Nothing, myAgentAddress, 0, 20) 'Marshal table to UI thread manager1.Marshal(manager1.Mib.GetByNodeName(NodeName.ifTable).Oid, table, "", Nothing) End Sub Private Sub manager1_Table(ByVal sender As Object, ByVal e As Dart.Snmp.TableEventArgs) 'Raised on the UI thread. 'Populate a ListView control with the table data buildTable(e.Table) End Sub Private Sub buildTable(ByVal table(,) As Variable) 'Add columns to the ListView for each column in the table For i As Integer = 0 To table.GetLength(1) - 1 lvwTable.Columns.Add(table(0, i).Definition.Name, 150, HorizontalAlignment.Left) Next i Dim tableRow As ListViewItem Dim r As Integer, c As Integer = 0 For r = 0 To table.GetLength(0) - 1 'Create a new row and add the first cell tableRow = New ListViewItem(table(r, 0).Value.ToString()) 'Add each additional cell in the row For c = 1 To table.GetLength(1) - 1 tableRow.SubItems.Add(If(table(r, c) Is Nothing, "NULL", table(r, c).Value.ToString())) Next c 'Add the row to the listview lvwTable.Items.Add(tableRow) Next r End Sub